from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_functions_agent
from langchain.agents import AgentExecutor
from langchain.tools.retriever import create_retriever_tool
import os
from 向量存储 import faiss_conn
from dotenv import load_dotenv

load_dotenv()
# 读取数据
retriever = faiss_conn().as_retriever()

# 检索器工具
retriever_tool = create_retriever_tool(
    retriever,
    "中华人民共和国民法典的一个检索器工具",
    "搜索有关中华人民共和国民法典的信息。关于中华人民共和国民法典的任何问题，您必须使用此工具!",
)

tools = [retriever_tool]

# https://smith.langchain.com/hub
# 使用在线的提示词模板
prompt = hub.pull("hwchase17/openai-functions-agent")

llm = ChatOpenAI(api_key=os.getenv("api_key"),
                 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
                 model='qwen-plus')
# 创建一个agent代理，tools：该代理可以访问的工具
agent = create_openai_functions_agent(llm, tools, prompt)
# agent：要执行那个代理 tools：代理可以调用的工具，verbose：是否以详细模型运行，
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 运行代理
res = agent_executor.invoke({"input": "你是谁？"})
print(res)